// 1.数据库  2.集合(表)  3.文档(行)

// NodeJS连接 MongoDB 数据库 --- mongoose
const fs = require('fs');
const http = require('http');
const mongoose = require("mongoose");

const hostname = "0.0.0.0";
const port = 27017;//mongoDB专用端口
const dbname = "blogsystem";//库名
// mongoose.connect('mongodb://用户名:密码@127.0.0.1:27017/数据库名称');//格式
// 连接多个数据库，只需要设置多个url以,隔开，同时设置mongos为true
const username = "";//若果设置了就需要写上;默认是没设置的
const password = "";

const options = {//如不写,会报警告warming
    useNewUrlParser: true,
    useUnifiedTopology: true

}
// const DB_URL = `mongodb://${username}:${password}@${hostname}:${port}/${dbname}`;
// 上线时没有用户名和密码可能链接失败,索性省略不写
const DB_URL = `mongodb://${hostname}:${port}/${dbname}`;

mongoose.connect(DB_URL, options, err => {
    if (err) {//不要用throw
        console.log(err);
    } else {
        console.log('Mongoose connection open to ' + DB_URL);
    }
})


// 导入Model 构造器
// let { Movie } = require("./schema");
// // 先实例化为文档，再使用save()方法保存文档 save

// 集合名称为"模型名称的小写复数版"-为了避免可在末尾加数字
// 通过new Model1()创建的文档doc1，必须通过save()方法，才能将创建的文档保存到数据库的集合中

// 第一次:若没这个集合的时候,添加内容;使表存在
// new Movie({ name: "肖申克的救赎" }).save((err, doc) => {
//     console.log(doc);
// })

// 就是空表是不存在的,只有表里面有数据时才能存在,不然只是白创建 

function zhushi() {
    /* 创建文档(表)之后, 进行增删改查********************************
    
    // 删除  deleteOne  deleteMany   remove
    // Movie.deleteMany({
    //     // nation: "美国"
    //     // username: /huajianhua/
    //     // name: "肖申克的救赎1",
    //     "_id" : "5dd7e34ac23c124c1c2e4747"
    // }).then(result => {
    //     console.log(result)
    // })
    
    修改
    update()
    updateMany()
    find() + save()
    updateOne()
    findOne() + save()
    findByIdAndUpdate()
    fingOneAndUpdate()
    
    // Movie.update({
    //     name: "肖申克的救赎1"
    // }, {
    //     $set: {
    //         name: "肖申克的救赎",
    //     }
    // }).then(result => {
    //     console.log(result);
    // })
    // Movie.updateMany({
    //     name: "肖申克的救赎"
    // }, {
    //     $set: {
    //         name: "肖申克的救赎1",
    //         nation: "美国"
    //     }
    // }).then(result => {
    //     console.log(result);
    // })
    
    // 增加
    // User.create({
    //     username:"coco88"
    // },{
    //     username:"mumu88"
    // }).then(result=>{
    //     console.log(result);
    // });
    // User.insertMany([{username:"武汉1909"},{username:'are youok '}]).then(result=>{
    //     console.log(result);
    // })
    
    // fs.readFile('./cinemas.json', 'utf8', (err, data) => {
    //     console.log(err);
    //     if (err) throw err;
    //     console.log(data);
    //      为什么变量不行
    //     Movie.insertMany(data).then(result => {
    //         console.log(result);
    //     })
    // });
    // Movie.insertMany([
    // 插入的内容
    // ]).then(result => {
    //     console.log(result);
    // })
    
    
    // 查找
    // 排序 sort
    // Movie.find({}, {}).sort({ _id: -1 }).then(result => {
    //     console.log(result);
    // })
    
    // Movie.find({}, {}).sort({ _id: -1 }).then(result => {
    //     // console.log(result);
    //     // const http = require("http");
    //     function initServer(url, data) {
    //         http.createServer((req, res) => {
    //             if (req.url == url) {
    //                 res.writeHead(200, { "content-type": 'application/json' });//接收 josn 格式数据
    //                 res.write(JSON.stringify(data));
    //                 res.end();
    //             }
    //         }).listen(3000, "0.0.0.0", () => {
    //             console.log("spider server is running at http://localhost:3000")
    //         })
    //     }
    
    //     initServer('/movie', result);
    // })
    */
}


const connection = mongoose.connection;
// 监听: 可写可不写  没什么用 - 此处不写了(注释掉了)
// // 连接成功
// connection.on("connected", () => {
//     console.log('Mongoose connection open to ' + DB_URL);
// })
// // 数据库开启
// connection.on("open", () => {
//     console.log('mongoose open')
// });
// // 链接异常
// connection.on('error', err => {
//     console.log('Mongoose connection error: ' + err);
// })
// // 监听断开链接
// connection.on('disconnected', () => {
//     console.log('Mongoose connection fail 链接失败')
// })

// 主动断开操作
// mongoose.disconnect(function(){
//     console.log("断开连接");
// })
module.exports = connection;

